iT邦幫忙

2025 iThome 鐵人賽

DAY 24
0
自我挑戰組

cpe30天練習系列 第 24

cpe練習day24

  • 分享至 

  • xImage
  •  

今天是練習cpe的An Easy Problem題目

程式碼

#include <bits/stdc++.h>
using namespace std;

int main() 
{
    string s;
    while (getline(cin, s)) 
	{
        int sum = 0; 
		int mx = 1; 
		int tmp;

        for (int i = 0; i < s.length(); i++) 
		{
            if (s[i] >= '0' && s[i] <= '9')
            {
                tmp = s[i] - '0';
        	}
            else if (s[i] >= 'A' && s[i] <= 'Z')
            { 
                tmp = s[i] - 'A' + 10;
            } 
            else if (s[i] >= 'a' && s[i] <= 'z')
			{ 
                tmp = s[i] - 'a' + 36;
            } 
            else
            { 
                continue;
			} 
            mx = max(mx, tmp);
            sum += tmp;
        }

        int i;
        for (i = mx; i < 62; i++) 
		{
            if (sum % i == 0) 
			{  
                cout << i + 1 << endl;
                break;
            }
        }

        if (i == 62)
            cout << "such number is impossible!" << endl;
    }
    return 0;
}

解題方向

  • mx = 1 -> 目前遇到的最大位值(例如字元'F'→15)初始值設定成1,因為進制最小要是2如果設0可能錯誤地檢查1進制
  • for (int i = 0; i < s.length(); i++) -> 這裡是把字元轉成對應的數值
  • sum % i == 0 -> 代表如果(N-1)能整除sum,那最小的進制就是N = i + 1

上一篇
cpe練習day23
下一篇
cpe練習day25
系列文
cpe30天練習25
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言